Python matplotlib.pyplot 绘制动态图

您所在的位置:网站首页 python 漫画训练成动画 Python matplotlib.pyplot 绘制动态图

Python matplotlib.pyplot 绘制动态图

2023-07-20 01:50| 来源: 网络整理| 查看: 265

这是我参与11月更文挑战的第21天,活动详情查看:2021最后一次更文挑战

复习回顾

在matplotlib模块中使用最多的类是pyplot。pyplot位于matplotlib模块中脚本层为入门用户提供快速绘制折线、柱状、散点、饼图等图形方法,我们前期也学习往期的文章如下

matplotlib 底层结构:对matplotlib模块底三层功能说明

matplotlib 绘制折线图:pyplot.plot()相关属性进行汇总说明

matplotlib 绘制柱状图:pyplot.bar()相关属性进行汇总说明

matplotlib Animation类绘制动画:animation类提供快速绘制动态图的类

在matplotlib模块为用户提供快速绘制动态图,除了专门绘制的动态类animation类外,pyplot也提供绘制动态图相关方法。

本期,我们将学习使用pyplot的绘制动态图相关方法,Let's gp~

1. pyplot绘图显示模式

我们前面学习绘制的方法后,最后都会调用pyplot.show()方法,运行程序后才会显示图像。

在matplotlib模式中绘制图形通常有两种模式:

block:阻塞模式 阻塞模式打开一个fig窗口后不会显示新fig窗口 pyplot提供的绘制图形方法都是直接出图像,需要调用pyplot.show()才能显示图像 在Python脚本中,matplotlib默认是阻塞模式 pyplot.show()在阻塞情况,为True interactive:交互模式 新创建的图像会立即显示 图表上的数据会根据变化而自动重新绘制 当使用交互模式下,需要确保事件循环正在运行具有响应数字 在python 命令行中,matplotlib 默认为交互模式 pyplot.show 在交互模式下为False

image.png

pyplot提供绘制动图的方法 方法作用pyplot.ion()打开交互模式pyplot.ioff()关闭交互模式pyplot.clf()清除当前的画布figure对象pyplot.cla()清除当前Axes对象pyplot.pause()暂停功能 2. pyplot绘制动图步骤

matplotlib模块中,我们可以使用交互模式与GUI主循环组合绘制动态图形,主要有以下步骤:

导入绘制图形的matplotlib.pyplot模块 import matplotlib.pyplot as plt 复制代码 调用pyplot.ion()方法打开交互模式 plt.ion() 复制代码 使用numpy.linspace()、numpy.arange()等方法准备x,y轴数据 x = np.linspace(0,np.pi*i+1,1000) y = np.cos(x) 复制代码 调用pyplot.xlim(),pyplot.ylim()方法设置x,y轴坐标范围 plt.xlim(-0.2,20.4) plt.ylim(-1.2,1.2) 复制代码 调用pyplot提供绘制折线、柱状图等方法 plt.plot(x,y,color="pink") 复制代码

使用for循环包含上述创建的x,y数据、x,y轴坐标、绘制图形方法

使用for循环开始之前调用pyplot.cla()方法清空前一次Axes对象

plt.cla() 复制代码 在for循环结束末尾调用pyplot.pause()暂停gonn plt.pause(0.1) 复制代码 当for循环结束后,需要调用pyplot.ioff()关闭交互模式已经pyplot.show显示图像 plt.ioff() plt.show() 复制代码

2021-11-23 10-32-41.gif

3. 小试牛刀

我们学习以pyplot方法绘制动态图方法,哪我们来实操一下吧

调用numpy.arange()准备x,y轴数据 调用pyplot.scatter()绘制散点图 使用for循环包含以上步骤,在for循环开始调用pyplot.ion()打开交互模式 for循环结束后,调用pyplot.ioff()关闭交互模式 最后调用pyplot.show()展示图像画面 def scatter_plot(): # 打开交互模式 plt.ion() for index in range(50): # plt.cla() plt.title("动态散点图") plt.grid(True) point_count = 5 x_index = np.random.random(point_count) y_index = np.random.random(point_count) color_list = np.random.random(point_count) scale_list = np.random.random(point_count) * 100 plt.scatter(x_index, y_index, s=scale_list, c=color_list, marker="^") plt.pause(0.2) plt.ioff() plt.show() 复制代码

image.png

2021-11-23 10-31-36.gif

总结

本期,我们学习matplotlib模块pyplot绘制动态图形的方法,在绘制图形中我们要使用for循环来生成每一次的数据,最后使用pyplot.show()展示图形时,需要先关闭交互模式,否则图形会一闪而过,发生闪退现象。

以上是本期内容,欢迎大佬们点赞评论,下期见~



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3